#ifndef BACKENDWND_H
#define BACKENDWND_H

#include <QWidget>
#include "CommonType.h"
#include "GlobalSignal.h"

namespace Ui {
class BackendWnd;
}

class QButtonGroup;
class QAbstractButton;

class QStandardItemModel;

class QComboBox;
class QTableView;

class QCompleter;

using namespace zl;
class BackendWnd : public QWidget
{
    Q_OBJECT

public:
    explicit BackendWnd(QWidget *parent = 0);
    ~BackendWnd();

    // 显示后台界面首页 （功能选择界面）
    void ShowBackendPage();

    // 设置当前显示的后台界面
    void SetBackendPage(zl::EBP backendPage);

    // 通知退出后台界面
    void NotifyQuitBackend();

    // 加载数据
    void LoadData();

    // 更新设置页面信息
    void UpdatePanelAdvance();
protected:

    // 初始化
    void init();

    // 初始化 tableview控件
    void init_table_view();

    // 初始化 功能选择界面
    void init_select_page();

    // 初始化 记录查询页面
    void init_record_page();

    // 初始化 设置页面
    void init_advance_page();

    // 更新 设置页面信息
    void update_advance_info();

    // 更新 所有 自动填充功能combobox控件内容
    void update_combo_completer();

private:

    // 初始化 record页面 page all 日期表控件
    void init_all_page_time_select();

    // 初始化 record页面 page sn 日期表控件
    void init_sn_page_time_select();

    // 初始化 record页面 page all 普通combobox控件 （无自动填充功能）
    void init_all_page_combo_normal();

    // 初始化 record页面 page all 自动填充功能combobox控件
    void init_all_page_combo_completer();

    // 初始化 record页面 page sn 自动填充功能combobox控件
    void init_sn_page_combo_completer();

    // 更新 record页面 page all combobox控件自动填充内容
    void update_all_page_combo_completer();

    // 更新 record页面 page sn combobox控件自动填充内容
    void update_sn_page_combo_completer();
protected slots:
    // 语言切换信号槽函数
    void lang_change();

    // 用户点击确认 信号槽函数
    void event_confirm_type(zl::EUserConfirmType type, bool confirm);

    //  功能模块选择页面 按钮槽函数
    void event_backend_select_btn_clicked(int index);

    //  记录模块选择页面 按钮槽函数
    void event_navi_btn_clicked(int index);

    // record页面 page all 查询按钮槽函数
    void on_btn_all_record_query_clicked();

    // record页面 page all 导出按钮槽函数
    void on_btn_all_record_export_excel_clicked();

    // record页面 page all 全选按钮槽函数
    void on_btn_all_record_sel_all_clicked();

    // record页面 page all 取消选中按钮槽函数
    void on_btn_all_record_reset_selected_clicked();

    // record页面 page all 删除选中按钮槽函数
    void on_btn_all_record_delete_clicked();


    // record页面 page sn 查询按钮槽函数
    void on_btn_sn_record_query_clicked();

    // record页面 page sn 导出按钮槽函数
    void on_btn_sn_record_export_excel_clicked();

    // record页面 page sn 全选按钮槽函数
    void on_btn_sn_record_sel_all_clicked();

    // record页面 page sn 取消选中按钮槽函数
    void on_btn_sn_record_reset_selected_clicked();

    // record页面 page sn 删除选中按钮槽函数
    void on_btn_sn_record_delete_clicked();

    // setting页面 切换中文按钮槽函数
    void on_btn_lang_cn_clicked();

    // setting页面 切换英文按钮槽函数
    void on_btn_lang_en_clicked();

    // setting页面 保存设置按钮槽函数
    void on_btn_save_advance_clicked();

signals:

    // 信号 配置变更
    void configChanged();

private:
    Ui::BackendWnd *ui;

    QButtonGroup*           btnGpBackendSel;            // 组合按键 选择后台模块
    QButtonGroup*           btnGpRecordSel;             // 组合按键 选择记录类型按钮

    QStandardItemModel*		model_all_record_result_;           // record页面 page all tableview控件的model对象
    QStandardItemModel*		model_sn_record_result_;            // record页面 page sn tableview控件的model对象

    QCompleter*             completer_all_page_account;         // record页面 page all combobox控件account 自动填充
    QCompleter*             completer_all_page_sn;              // record页面 page all combobox控件sn 自动填充

    QCompleter*             completer_sn_page_account;          // record页面 page sn combobox控件account 自动填充
    QCompleter*             completer_sn_page_sn;               // record页面 page sn combobox控件sn 自动填充

    zl::RecordVec           all_record_vec_;                    // 当前显示的操作记录
    zl::SNInfoVec           sn_record_vec_;                     // 当前显示的SN记录
};

#endif // BACKENDWND_H
